// 引入 pinia 提供的 defineStore 方法来定义 store （组合式函数）
import { defineStore } from 'pinia'

// 定义store,返回的是一个组合式函数，命令规则一般 useXxxxStore
//    defineStore(id, 配置项)
//       id - 当前 store 的唯一标识，需要全局唯一
//       配置项 - 对象
//                 - state
//                 - getters
//                 - actions
//       配置项 - 函数
export const useXxStore = defineStore('xx', {
  state() {
    return {
      count: 10,
    }
  },

  getters: {
    countDouble(state) {
      return state.count * 2
    },
  },

  actions: {
    // action 的参数，是调用该 action 时传递过来的参数
    //    action 内部可以通过 this 获取到当前 store 实例
    increment() {
      // 可以直接修改 state 数据
      this.count++
    },

    asyncIncrement() {
      // 也可以异步的修改 state 数据
      // const _this = this

      // setTimeout(function () {
      //   console.log('this', this)
      //   _this.count++
      // }, 1000)

      setTimeout(() => {
        this.count++
      }, 1000)
    },
  },
})

// 导出 组合式函数，供组件去使用
// export default useXxStore
